package saveInDatabase;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

import extract.*;

public class saveIn{
	public ArrayList<ShazamHash> a;
	
	public saveIn(ArrayList<ShazamHash> a){
		this.a=a;
	}
	
	public void save(conn){
		ArrayList<newHash> al=convert(Orial);
        Orial=null;
        System.out.println(al.size());
        //��������Ϣ����song����,����Ϊ�˲��ظ������ע�͵���
        
		//songRecord a = new songRecord(songName);
		//int songId = a.saveSong(conn);
		//��ȡ֮ǰ��songId����ָ�ƴ����ӦsongId��songFinger����,����ֻ��Ϊ�˲�ѯ��ǰʱ�䣬���������ע�͵���
		//saveAl(al,songId);
		
		al=null;
		
		//һ�׸����洢��ϵı�־
		//����֮ǰ�������ö�ȡ��������txt�Զ��������洢��
		//����֪��ô���������Ŀ����Ƕ����ˣ�ֻ���ֶ�һ��һ�ײ壬ÿ�ײ�����δ��������ʱ��5s���ڣ���ȥ�˼���ָ�Ƶ�ʱ�䣩
		//��������֮�����ʱ����֮ǰ��2-3��
		//���ղ���ĸ�����ָ�Ʋ�δȥ�أ����Ǻ���������ȥ��
		//������׸�ȥ�أ���ô�о�������Ӱ��ƥ�䣬ȫ��������ȥ�ز嵽60���׵�ʱ�����׸��ֻʣn*10��n<10����ָ����
		//System.out.println(songName+" OK!!!");
	}
	
	//�������ݿ�����
	public static Connection getConn() {
	    String driver = "com.mysql.jdbc.Driver";
	    String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true&useServerPrepStmts=false&rewriteBatchedStatements=true";
	    String username = "root";
	    String password = "reproach";
	    Connection conn = null;
	    try {
	        Class.forName(driver); //classLoader,���ض�Ӧ����
	        conn = (Connection) DriverManager.getConnection(url, username, password);
	    } catch (ClassNotFoundException e) {
	        e.printStackTrace();
	    } catch (SQLException e) {
	        e.printStackTrace();
	    }
	    return conn;
	}
	//��(f1,f2,dt)��ָ��ArrayListת��Ϊ��һ��ָ�Ƶ������ĺ���
	public static ArrayList<newHash> convert(ArrayList<ShazamHash> o){
		ArrayList<newHash> al=new ArrayList<newHash>();
        for(int i=0;i<o.size();i++){
        	ShazamHash s1 = o.get(i);
        	int dt=s1.dt;
        	int f1=s1.f1;
        	int f2=s1.f2;
        	int fingerId = (dt<<18)|(f1<<9)|f2;
        	int of=s1.offset;
        	al.add(new newHash(fingerId,of));
        }
        return al;
	}
	//�洢ָ�ƣ���ӦsongId����offset��songFinger���еĺ���
	public static void saveAl(ArrayList<newHash> al,int songId) throws SQLException{
		    //
		    String sql = "insert ignore into songFinger (songId,fingerId,offset) values(?,?,?)";
		    PreparedStatement pstmt;
		    conn.setAutoCommit(false); // �����ֶ��ύ
		    pstmt = (PreparedStatement) conn.prepareStatement(sql);
		    for(int n=0;n<al.size();n++){
		       
		        pstmt.setInt(1, songId);
		        pstmt.setInt(2, al.get(n).fi);
		        pstmt.setInt(3, al.get(n).offset);
		        pstmt.addBatch();          // ������������ 
		       
		    }
		    pstmt.executeBatch(); // ִ����������
		    conn.commit();  // �ύ
	}
	
	
}